=head1 NAME

spm.conf - Source Package Manager configuration file

=head1 DESCRIPTION

spm.conf is the configuration file used by Source Package Manager. It is
divided into sections - spm, prepare, compile, install and merge. These
sections represent options used at different stage of the software
building process.

=head1 OPTIONS

=head2 CACHE_DIR

Set the directory where the repositories, sources and tarballs will be
placed. The repositories directory holds all recipes (SRCBUILD) to build
targets. The sources directory is the place where all source tarballs are
fetched. The tarballs directory holds all compressed archives which are
ready to be merged.

Default: /var/cache/spm

=head2 BUILD_DIR

Set the directory where the sources should be prepared and compiled. This
directory may consume a lot of space over time so you may want to change it.

Default: /var/tmp/spm

=head2 ROOT_DIR

Set the system root directory. Unless you want to bootstrap a system with
SPM it should not be changed. ROOT_DIR must include backslash at the end
of the string, e.g. /home/joe/bootstrap/.

Default: /

=head2 GPG_DIR

Set the GnuPG home directory. It would make sense to change it only to make the
imported keys temporary by setting this option to /tmp/spm-gpg or /run/spm-gpg.

Default: /etc/spm/gpg

=head2 IGNORE

Set targets to be ignored when building and removing.

Default: filesystem

=head2 DEMOTE

Set as which user some operations should be performed as when that is possible.
It does not affect all of the actions and is experimental for now. Also, do
note that it works only on sub-processes. Empty value meens do not drop
priviledges at all.

Default:

=head2 SIGN

Set a key ID to be used for signing files such as tarballs. If empty files are not signed.

Default: 

=head2 OFFLINE

Set wheather to not even try to connect to the internet when not strictly
required. This option is useful in cases when your internet connection is not
very good (slow) and you know that there is no need to be ping remote servers
for the operation SPM is told to do.

Default: False

=head2 MIRROR

Set whether to use mirrors or not. If set to true mirrors will be pinged
and sources fetched from them if available. As fallback is used the
original source defined in the build script (SRCBUILD). 

Default: True

=head2 TIMEOUT

Set the time in seconds to wait before bailing out when mirrors and
internet connection are checked.

Default: 30

=head2 VERIFY

Set wheather to verify PGP signatures of downloads. Not every host provides
signatures for their content but it's becoming manditory.

Default: True

=head2 CHOST

Set the environmental variable CHOST when building software. The CHOST
flag specifies the target hardware platform, (ppc, i386, i586 etc), so
that the code is compiled with the right instruction set.

Default: #MACHINE#

=head2 CFLAGS

Set the environmental variable CFLAGS when building software. The CFLAGS
flag specifies desired optimization/CPU instruction for C code.

Default: -march=#ARCH# -mtune=native -O2 -pipe -fstack-protector
         --param=ssp-buffer-size=4

=head2 CXXFLAGS

Set the environmental variable CXXFLAGS when building software. The CXXFLAGS
flag specifies desired optimization/CPU instruction for C++ code.

Default: -march=#ARCH# -mtune=native -O2 -pipe -fstack-protector
         --param=ssp-buffer-size=4

=head2 CPPFLAGS

Set the environmental variable CPPFLAGS when building software. The CPPFLAGS
flag specifies desired C PreProcessor instruction for C code.

Default: -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2


=head2 LDFLAGS

Set the environmental variable LDFLAGS when building software. The LDFLAGS
flag specifies desired linker options.

Default: -Wl,--hash-style=gnu -Wl,--as-needed

=head2 MAKEFLAGS

Set the environmental variable MAKEFLAGS when building software. The MAKEFLAGS
flag specifies desired `make` options.

Default: -j#JOBS#

=head2 COMPRESS_MAN

Set whether to compress manual pages. Doing so will save you some space.

Default: True

=head2 SPLIT_DEBUG

Set wheather to split debug information from DWARF files so that even when
binaries and libraries are stripped software debugging is possible. Do note
that debug symbols are usually quite space consuming thus on machines with
limited storage you may want to set that to False.

Default: True

=head2 STRIP_BINARIES

Set whether to strip all symbols from binaries. This reduces the size of
the binaries but it may corrupt some of them.

Default: True

=head2 STRIP_SHARED

Set whether to strip all symbols that are not needed for relocation
processing from shared libraries. This reduces the size of the shared
libraries but it may corrupt some of them.

Default: True

=head2 STRIP_STATIC

Set whether to strip debugging symbols from static libraries. This reduces
the size of the static libraries but it may corrupt some of them.

Default: True

=head2 STRIP_RPATH

Set whether to strip insecure RPATH from binaries and libraries. This reduces
the chance for exploiting them but it may corrupt some of them.

Default: True

=head2 IGNORE_MISSING

Set whether to ignore missing runtime dependencies. This is used only as a
workaround for false positives.

Default: False

=head2 CONFLICTS

Set whether to check for conflicting files/links when merging targets.

Default: True

=head2 BACKUP

Set whether to backup files when merging targets.

Default: True

=head2 SCRIPTS

Set whether to execute pre/post script actions when merging targets.

Default: True

=head2 TRIGGERS

Set whether to execute triggers when merging targets.

Default: True

=head1 EXAMPLES

[spm]

CACHE_DIR = /var/cache/spm

BUILD_DIR = /var/tmp/spm

ROOT_DIR = /

GPG_DIR = /etc/spm/gpg

IGNORE = glibc zlib bash

=head1 FILES

/etc/spm.conf

/etc/spm/repositories.conf

/etc/spm/mirrors.conf

/etc/spm/keyservers.conf

=head1 AUTHORS

Ivailo Monev (a.k.a. SmiL3y) <xakepa10@gmail.com>

Copyright (c) 2013-2015 Ivailo Monev licensed through custom license, see the
COPYING file bundled with the source code.

=head1 SEE ALSO

spm(8) SRCBUILD(5) gpg(1) gcc(1) ld(1) make(1) objcopy(1) strip(1)
